package common

import (
	"crypto/md5"
	"fmt"
	"io"
	"os"
	"strings"
	"time"

	"github.com/gin-gonic/gin"

	"go-papers/tools/app"
	"go-papers/tools/config"
)

/**上传方法**/
func Fileupload(c *gin.Context) {
	//得到上传的文件
	file, header, err := c.Request.FormFile("image") //image这个是uplaodify参数定义中的   'fileObjName':'image'
	if err != nil {
		app.ApiResp(c, -1, "文件异常："+err.Error(), nil)
		return
	}
	//文件的名称
	filename := header.Filename
	if header.Size <= 10 {
		app.CommonResp(c, 500, "上传文件太小", "")
	}
	if header.Size >= 10485760 {
		app.CommonResp(c, 500, "上传文件太大，10M", "")
	}
	// 获取图片的类型
	str1 := strings.Split(filename, ".")
	ext := str1[len(str1)-1]
	//创建文件
	day := time.Now().Format("20060102150405")
	da := []byte(filename)
	has := md5.Sum(da)
	md5str := fmt.Sprintf("%x", has)
	//文件名
	newfilename := day + "_" + md5str + "." + ext
	fp := "static/uploadfile/" + newfilename
	out, err := os.Create(fp)
	//注意此处的 static/uploadfile/ 不是/static/uploadfile/
	if err != nil {
		app.ApiResp(c, -1, "文件路径创建失败："+err.Error(), nil)
		return
	}
	defer out.Close()
	nm, err := io.Copy(out, file)
	if err != nil {
		app.ApiResp(c, -1, "数据插入失败："+err.Error(), nil)
		return
	}

	localImg := config.GConfig.Config.ImgHost
	app.OK(c, gin.H{
		"size": nm,
		"file": fp,
		"url":  localImg + "/" + fp,
	}, "上传成功")
}
